#ifndef __APP_BLE_H__
#define __APP_BLE_H__

#include "app_device.h"

typedef enum{
    BLE_BR9600 = '4',
    BLE_BR115200 = '8'
}BLE_BaudRate;

/**
 * @brief  测试BLE模块是否可用
 * @param  device: 设备结构体
 * @retval 0: 可用  -1: 不可用
 */
int App_BLE_Status(Device_t *device);

/**
 * @brief 修改BLE模块名称
 * @param  device: 设备结构体
 * @param  name: 新名称
 * @retval 0: 成功  -1: 失败
 */
int App_BLE_ModifyName(Device_t *device, char *name);

/**
 * @brief  设置BLE模块波特率
 * @param  device: 设备结构体
 * @param  br: 波特率
 * @retval 0: 成功  -1: 失败
 */
int App_BLE_SetBaudRate(Device_t *device, BLE_BaudRate br);

/**
 * @brief BLE模块重启
 * @param  device: 设备结构体
 * @retval 0: 成功  -1: 失败
 */
int App_BLE_Reset(Device_t *device);

/**
 * @brief  设置BLE模块网络ID
 * @param  device: 设备结构体
 * @param  netid: 网络ID
 * @retval 0: 成功  -1: 失败
 */
int App_BLE_SetNetID(Device_t *device, char *netid);

/**
 * @brief  设置BLE模块MAC地址
 * @param  device: 设备结构体
 * @param  maddr: MAC地址
 * @retval 0: 成功  -1: 失败
 */
int App_BLE_SetMaddr(Device_t *device, char *maddr);

/**
 * @brief  BLE模块初始化
 * @param  device: 设备结构体
 * @retval 0: 成功  -1: 失败
 */
int App_BLE_Init(Device_t *device);

/**
 * @brief  BLE模块数据读后处理
 * @param  data: 读取的数据和处理后的数据
 * @param  len:  读取的数据长度
 * @retval 数据处理后的长度
 */
int App_BLE_PostRead(char *data, int len);

/**
 * @brief  BLE模块数据写前处理
 * @param  data: 写前的数据和处理后的数据
 * @param  len:  写前的数据长度
 * @retval 数据处理后的长度(-1: 数据处理失败 0: 数据模式不是蓝牙)
 */
int App_BLE_PreWrite(char *data, int len);

#endif
